/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package saa.negocio;

import java.io.Serializable;
import java.util.List;
import saa.dominio.periodo.aluno.AvaliacaoAluno;
import saa.dto.NotasDTO;

public class Calculador implements Serializable {

    public static NotasDTO calcularNotas(List<AvaliacaoAluno> avaliacoes, int objetivo) {

        int notasObtidas = 0,
                somatoriaPesos = 0,
                reducaoPesos = 0;

        for (AvaliacaoAluno avaliacaoAluno : avaliacoes) {
            int nota = avaliacaoAluno.getNota(),
                    peso = avaliacaoAluno.getAvaliacao().getPeso();

            if (nota > 0) {
                reducaoPesos += peso;
                somatoriaPesos += peso;
                notasObtidas += nota * peso;
            } else {
                somatoriaPesos += peso;
            }
        }

        int notaMinima = (int) Math.ceil((double) ((objetivo * somatoriaPesos) - notasObtidas) / (double) (somatoriaPesos - reducaoPesos)),
                notaParcial = (int) Math.floor(notasObtidas / somatoriaPesos),
                notaMaximaParcial = (int) Math.floor(100 * reducaoPesos / somatoriaPesos);

        return new NotasDTO(notaMinima, notaParcial, notaMaximaParcial);
    }

}
